home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / MYMUD21.ZIP / MMUD21.ZIP / SOURCE / SOURCE.ZIP / PACK_DAT.PAS < prev    next >
Pascal/Delphi Source File  |  1995-01-21  |  2KB  |  94 lines

  1. Program PackMud;
  2. Uses Dos,Header,Misc;
  3.  
  4. Var Inp : File of ObjRecord;
  5.     Dat : File;
  6.     Out : File;
  7.     Rec : ObjRecord;
  8.  
  9.     MudName : ComStr;
  10.     DatSize : LongInt;
  11.     Nr      : Word;
  12.     Txt     : TextRecord;
  13.  
  14. Procedure CopyLong(Var L : LongRec);
  15. Var F   : File;
  16.     RR  : Word;
  17. Begin
  18. If (Integer(L.Length)=-1) Or (L.Start>DatSize)
  19.    Then Begin
  20.         FillChar(L,SizeOf(L),#00);
  21.         Exit;
  22.         End;
  23.  
  24. Assign(F,MudName+'.ODT');
  25. Reset(F,1);
  26. Seek(F,L.Start);
  27. BlockRead(F,Txt,L.Length,RR);
  28. Close(F);
  29. If RR<>L.Length
  30.    Then Begin
  31.         FillChar(L,SizeOf(L),#00);
  32.         Exit;
  33.         End;
  34.  
  35. Assign(F,Mudname+'.DAT');
  36. Reset(F,1);
  37. If IoResult<>0
  38.    Then Rewrite(F,1);
  39. Seek(F,FileSize(F));
  40. L.Start:=FilePos(F);
  41. BlockWrite(F,Txt,RR,RR);
  42. Close(F);
  43. If RR<>L.Length
  44.    Then Begin
  45.         FillChar(L,SizeOf(L),#00);
  46.         Exit;
  47.         End;
  48. End;
  49.  
  50.  
  51.  
  52. Begin
  53. MudName:=ParamStr(1);
  54.  
  55. Assign(Inp,MudName+'.IDX');
  56. Reset(Inp);
  57. If IoResult<>0
  58.    Then Halt;
  59.  
  60. Assign(Out,MudName+'.DAT');
  61. Rename(Out,MudName+'.ODT');
  62. Reset(Out,1);
  63. DatSize:=FileSize(Out);
  64. Close(Out);
  65. If IoResult<>0
  66.    Then Begin
  67.         Close(Inp);
  68.         Halt;
  69.         End;
  70.  
  71. Nr:=0;
  72. While Not Eof(Inp) Do
  73.  Begin
  74.  Read(Inp,Rec);
  75.  Inc(Nr);
  76.  With rec Do
  77.   Begin
  78.   Write(#13,Rec.Name);
  79.   If Success.Length  >0 Then CopyLong(Success)    Else Success.Start :=0;
  80.   If Fail.Length     >0 Then CopyLong(Fail)       Else Fail.Start    :=0;
  81.   If OSuccess.Length >0 Then CopyLong(OSuccess)   Else Osuccess.Start:=0;
  82.   If OFail.Length    >0 Then CopyLong(OFail)      Else OFail.Start   :=0;
  83.   If Desc.Length     >0 Then CopyLong(Desc)       Else Desc.Start    :=0;
  84.   If Finger.Length   >0 Then CopyLong(Finger)     Else Finger.Start  :=0;
  85.   If Macro.Length    >0 Then CopyLong(Macro)      Else Macro.Start   :=0;
  86.   End;
  87.  
  88.  Seek(Inp,Nr-1);
  89.  Write(Inp,Rec);
  90.  End;
  91.  WriteLn;
  92. Close(Inp);
  93. End.
  94.